package com.hebeiwangxiaozhang.admin.task;

import com.hebeiwangxiaozhang.admin.pojo.CommoditySkuUpError;
import com.hebeiwangxiaozhang.admin.repo.CommoditySkuRepository;
import com.hebeiwangxiaozhang.admin.repo.CommoditySkuUpErrorRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Scheduled;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class CommodityOnSaleErrorTask {

    @Autowired
    private CommoditySkuUpErrorRepository commoditySkuUpErrorRepository;

    @Autowired
    private CommoditySkuRepository commoditySkuRepository;

//    @Scheduled(cron = "0 */5 * * * ?") //每隔五分钟执行
    @Scheduled(cron = "*/10 * * * * ?")
    private void OnSaleErrorTaskExecute() {
        System.out.println("Start ......  to do the error handle.... ");
        List<CommoditySkuUpError> skuUpErrors = commoditySkuUpErrorRepository.searchByEpochAndStatus();
        List<Object> skus = new ArrayList<>();
        skuUpErrors.forEach(sku -> {
            skus.add(sku.getSkuId());
        });
        try {
            commoditySkuRepository.updateSkuOnSaleStatus(skus);
            skuUpErrors.forEach(sku -> {
                sku.setEpoch(sku.getEpoch() + 1);
                sku.setStatus(1);
            });
            commoditySkuUpErrorRepository.saveAll(skuUpErrors);
            System.out.println("Success ......  to do the error handle.... ");
        } catch (Exception e) {
            skuUpErrors.forEach(sku -> {
                int currEpoch = sku.getEpoch();
                if(currEpoch == 1) {
                    //人工干预。邮件发送。
                }
                sku.setEpoch(currEpoch + 1);
            });
            commoditySkuUpErrorRepository.saveAll(skuUpErrors);
            System.out.println("Error ......  to do the error handle.... ");
        }
        System.out.println("Finished ......  to do the error handle.... ");
    }
}
